数学模型

Wang Haihua

🍈 🍉🍊 🍋 🍌


模型表现

分类是将给定的数据集分类为类的过程。在机器学习(ML)中,我们训练模型,然后衡量它的表现,通过使用一些损失函数函数来改进它。 但是我们如何衡量它的表现呢?有哪些特别的特性要看吗? 一个容易想到的方法是将实际值与预测值进行比较,但单纯的用预测对的样本量与总预测样本量作比,得到准确率(accuracy rate)并不全面。

假设一个数据集中百分之九十以上的数据是0,其他数据为1,我们即使不做任何模型,遇到任何特征数据都将结果预测(瞎猜)为0,那么我们的这个预测也可以达到90%以上的准确率。可见单纯使用准确率并不能揭示

混淆矩阵

评估分类器性能的一个更好的方法是查看混淆矩阵。一般的想法是计算A类的实例被分类为B类的次数。

混淆矩阵中的每一行表示一个实际的类,而每一列表示一个预测的类。混淆矩阵提供了很多信息,但有时我们需要一些指标来进行比较。

假设对于一个分类器,它的精确率为72.9%,召回率为75.6%。那么如何将两个评价标准进行综合呢?

我们可以用到 F1分数 F1分数是精确率(查准率)和召回率(查全率)的调和平均值

$$F1-score = \frac{2}{\frac{1}{precision}+\frac{1}{recall}}$$

F1评分倾向于具有相似精确度和召回率的分类器。不过在某些情况下,你最关心的是精确度,而在其他情况下,你真正关心的是召回率。举个例子,如果你训练一个分类器来检测视频,对孩子是安全的,你可能会喜欢一个分类器,拒绝了很多好的视频(低召回),但仅保留安全(高精度),而不是一个分类器,有一个更高的召回率但让一些可怕的视频出现在你的产品(在这种情况下,您甚至可能想添加一个人工管道来检查分类器的视频选择)。另一方面,假设您训练分类器在监视图像上检测入店行窃者:如果您的分类器只有30%的精度,但它有99%的召回,这可能没有问题(当然,保安会得到一些错误的警报,但几乎所有的入店行窃者都会被抓住)。

能否同时提高精确率与召回率能?很不幸,两者不可兼得:提高精确度会降低召回率,反之亦然。

参考资料